// 生成树形结构
function generateTree(){
    // 准备生成树形结构的JSON数据
    $.ajax({
        "url":"menu/get/whole/tree.json",
        "type":"post",
        "dataType":"json",
        "success":function (response){
            var result = response.result;

            console.log(response);

            if (result == "SUCCESS"){
                // 创建JSON对象用于存储对ztree所做的设置
                var setting = {
                    "view":{
                        "addDiyDom":myAddDiyDom,
                        "addHoverDom":myAddHoverDom,
                        "removeHoverDom":myRemoveHoverDom
                    },
                    "data":{
                        "key": {
                            "url":"" // 防止点击跳转，这里的url设为空值
                        }
                    }
                };
                // 从响应体中获取树形结构数据
                var zNodes = response.data;
                // 初始化树形结构
                $.fn.zTree.init($("#treeDemo"),setting,zNodes);
            }

            if (result == "FAILED"){

                layer.msg(response.message);
            }
        },
        "error":function (response){
            layer.msg(response.message);
        }
    });
}

// 在鼠标离开节点范围时删除按钮组
function myRemoveHoverDom(treeId, treeNode){

    // 拼接按钮组的 id
    var btnGroupId = treeNode.tId + "_btnGrp";
    // 移除对应的元素
    $("#"+btnGroupId).remove();

}

// 在鼠标移入节点范围时显示按钮组
function myAddHoverDom(treeId, treeNode){

    // 为了在需要移除按钮组的时候能够精确定位到按钮组所在 span，需要给 span 设置有规律的 id
    var btnGroupId = treeNode.tId + "_btnGrp";

    // 判断一下以前是否已经添加了按钮组
    if($("#"+btnGroupId).length > 0) {
        return ;
    }

    // 准备各个按钮的 HTML 标签
    var addBtn = "<a id='"+treeNode.id+"' class='addBtn btn btn-info dropdown-toggle btn-xs' style='margin-left:10px;padding-top:0px;' href='#' title='添加子节点'>&nbsp;&nbsp;<i class='fa fa-fw fa-plus rbg '></i></a>";
    var removeBtn = "<a id='"+treeNode.id+"' class='removeBtn btn btn-info dropdown-toggle btn-xs' style='margin-left:10px;padding-top:0px;' href='#' title=' 删 除 节 点 '>&nbsp;&nbsp;<i class='fa fa-fw fa-times rbg '></i></a>";
    var editBtn = "<a id='"+treeNode.id+"' class='editBtn btn btn-info dropdown-toggle btn-xs' style='margin-left:10px;padding-top:0px;' href='#' title=' 修 改 节 点 '>&nbsp;&nbsp;<i class='fa fa-fw fa-edit rbg '></i></a>";

    // 获取当前节点的级别数据
    var level = treeNode.level;

    // 声明变量存储拼装好的按钮代码
    var btnHTML = "";

    // 判断当前节点的级别
    if(level == 0) {
    // 级别为 0 时是根节点，只能添加子节点
        btnHTML = addBtn;
    }

    if(level == 1) {
        // 级别为 1 时是分支节点，可以添加子节点、修改
        btnHTML = addBtn + " " + editBtn;

        // 获取当前节点的子节点数量
        var length = treeNode.children.length;

        // 如果没有子节点，可以删除
        if(length == 0) {
            btnHTML = btnHTML + " " + removeBtn;
        }
    }

    if(level == 2) {
        // 级别为 2 时是叶子节点，可以修改、删除
        btnHTML = editBtn + " " + removeBtn;
    }

    // 找到附着按钮组的超链接
    var anchorId = treeNode.tId + "_a";

    // 执行在超链接后面附加 span 元素的操作
    $("#"+anchorId).after("<span id='"+btnGroupId+"'>"+btnHTML+"</span>");

}


// 修改菜单默认的图标
function myAddDiyDom(treeId, treeNode){

    // 根据id生成规则拼接span标签的id
    var spanId = treeNode.tId + "_ico";
    // 根据id找到span标签后将里面的class属性移除再加新的
    $("#"+spanId).removeClass().addClass(treeNode.icon);

}